
#ifndef _API_DESC_H_
#define _API_DESC_H_

#ifdef __cplusplus
extern "C" {
#endif

/**********************************************************************************************************
       Port control 
 **********************************************************************************************************/

#define SW_API_PT_TYPE_GET_DESC \
    SW_PARAM_DEF(SW_API_PT_TYPE_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
    SW_PARAM_DEF(SW_API_PT_TYPE_GET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
    SW_PARAM_DEF(SW_API_PT_TYPE_GET, SW_PORT_TYPE, sizeof(fal_port_type_t), SW_PARAM_PTR|SW_PARAM_OUT, "Port type"), \
    SW_PARAM_DEF(SW_API_PT_TYPE_GET, SW_PORT_COMB_PORT, sizeof(fal_port_comb_t), SW_PARAM_PTR|SW_PARAM_OUT, "Comb Port"),

#define SW_API_PT_LINK_STATUS_GET_DESC \
    SW_PARAM_DEF(SW_API_PT_LINK_STATUS_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"),  \
    SW_PARAM_DEF(SW_API_PT_LINK_STATUS_GET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
    SW_PARAM_DEF(SW_API_PT_LINK_STATUS_GET, SW_PORT_LINK_STATUS, sizeof(fal_port_link_status_t), SW_PARAM_PTR|SW_PARAM_OUT, "Link status"),

#define SW_API_PT_ADMIN_MODE_SET_DESC \
    SW_PARAM_DEF(SW_API_PT_ADMIN_MODE_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
    SW_PARAM_DEF(SW_API_PT_ADMIN_MODE_SET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
    SW_PARAM_DEF(SW_API_PT_ADMIN_MODE_SET, SW_ENABLE, sizeof(fal_enable_t), SW_PARAM_IN, "Admin mode"),

#define SW_API_PT_ADMIN_MODE_GET_DESC \
    SW_PARAM_DEF(SW_API_PT_ADMIN_MODE_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
    SW_PARAM_DEF(SW_API_PT_ADMIN_MODE_GET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
    SW_PARAM_DEF(SW_API_PT_ADMIN_MODE_GET, SW_ENABLE, sizeof(fal_enable_t), SW_PARAM_PTR|SW_PARAM_OUT, "Admin mode"),

#define SW_API_PT_PHYSICAL_MODE_SET_DESC \
    SW_PARAM_DEF(SW_API_PT_PHYSICAL_MODE_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
    SW_PARAM_DEF(SW_API_PT_PHYSICAL_MODE_SET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
    SW_PARAM_DEF(SW_API_PT_PHYSICAL_MODE_SET, SW_PORT_PHYSICAL_MODE, sizeof(fal_port_physical_mode_t), SW_PARAM_IN, "Physical mode"),

#define SW_API_PT_PHYSICAL_MODE_GET_DESC \
    SW_PARAM_DEF(SW_API_PT_PHYSICAL_MODE_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
    SW_PARAM_DEF(SW_API_PT_PHYSICAL_MODE_GET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
    SW_PARAM_DEF(SW_API_PT_PHYSICAL_MODE_GET, SW_PORT_PHYSICAL_MODE, sizeof(fal_port_physical_mode_t), SW_PARAM_PTR|SW_PARAM_OUT, "Physical mode"),

#define SW_API_PT_PHYSICAL_STATUS_GET_DESC \
    SW_PARAM_DEF(SW_API_PT_PHYSICAL_STATUS_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
    SW_PARAM_DEF(SW_API_PT_PHYSICAL_STATUS_GET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
    SW_PARAM_DEF(SW_API_PT_PHYSICAL_STATUS_GET, SW_PORT_PHYSICAL_STATUS, sizeof(fal_port_physical_status_t), SW_PARAM_PTR|SW_PARAM_OUT, "Physical status"),
    
#define SW_API_PT_FLOWCTRL_MODE_SET_DESC \
    SW_PARAM_DEF(SW_API_PT_FLOWCTRL_MODE_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
    SW_PARAM_DEF(SW_API_PT_FLOWCTRL_MODE_SET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
    SW_PARAM_DEF(SW_API_PT_FLOWCTRL_MODE_SET, SW_ENABLE, sizeof(fal_enable_t), SW_PARAM_IN, "Flowctrl mode"),

#define SW_API_PT_FLOWCTRL_MODE_GET_DESC \
    SW_PARAM_DEF(SW_API_PT_FLOWCTRL_MODE_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
    SW_PARAM_DEF(SW_API_PT_FLOWCTRL_MODE_GET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
    SW_PARAM_DEF(SW_API_PT_FLOWCTRL_MODE_GET, SW_ENABLE, sizeof(fal_enable_t), SW_PARAM_PTR|SW_PARAM_OUT, "Flowctrl mode"),

#define SW_API_PT_DOT1D_STATE_SET_DESC \
    SW_PARAM_DEF(SW_API_PT_DOT1D_STATE_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
    SW_PARAM_DEF(SW_API_PT_DOT1D_STATE_SET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
    SW_PARAM_DEF(SW_API_PT_DOT1D_STATE_SET, SW_PORT_DOT1D_STATE, sizeof(fal_port_dot1d_state_t), SW_PARAM_IN, "Dot1d state"),

#define SW_API_PT_DOT1D_STATE_GET_DESC \
    SW_PARAM_DEF(SW_API_PT_DOT1D_STATE_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
    SW_PARAM_DEF(SW_API_PT_DOT1D_STATE_GET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
    SW_PARAM_DEF(SW_API_PT_DOT1D_STATE_GET, SW_PORT_DOT1D_STATE, sizeof(fal_port_dot1d_state_t), SW_PARAM_PTR|SW_PARAM_OUT, "Dot1d state"),
    
#define SW_API_PT_TEST_SHOW_ALL_DESC \
    SW_PARAM_DEF(SW_API_PT_TEST_SHOW_ALL, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), 

#define SW_API_PT_PCS_STATUS_GET_DESC \
	SW_PARAM_DEF(SW_API_PT_PCS_STATUS_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_PT_PCS_STATUS_GET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
	SW_PARAM_DEF(SW_API_PT_PCS_STATUS_GET, SW_UINT32, 4, SW_PARAM_PTR|SW_PARAM_OUT, "PCS Status"),

#define SW_API_PT_COMB_PORT_SET_DESC\
	SW_PARAM_DEF(SW_API_PT_COMB_PORT_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_PT_COMB_PORT_SET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
	SW_PARAM_DEF(SW_API_PT_COMB_PORT_SET, SW_PORT_COMB_TYPE, sizeof(fal_port_comb_type_t), SW_PARAM_IN, "COMB Type"),

#define SW_API_PT_COMB_PORT_GET_DESC\
	SW_PARAM_DEF(SW_API_PT_COMB_PORT_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_PT_COMB_PORT_GET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
	SW_PARAM_DEF(SW_API_PT_COMB_PORT_GET, SW_PORT_COMB_TYPE, sizeof(fal_port_comb_type_t), SW_PARAM_PTR|SW_PARAM_OUT, "COMB Type"),


/**********************************************************************************************************
       MIB info
 **********************************************************************************************************/
#define SW_API_PT_MIB_GET_DESC \
    SW_PARAM_DEF(SW_API_PT_MIB_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
    SW_PARAM_DEF(SW_API_PT_MIB_GET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
    SW_PARAM_DEF(SW_API_PT_MIB_GET, SW_MIB, sizeof(fal_mib_info_t), SW_PARAM_PTR|SW_PARAM_OUT, "MIB info"),
              
#define SW_API_PT_MIB_CLEAR_DESC \
    SW_PARAM_DEF(SW_API_PT_MIB_CLEAR, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_PT_MIB_CLEAR, SW_UINT32, 4, SW_PARAM_IN, "Port No."),
	

/**********************************************************************************************************
       Mirror 
 **********************************************************************************************************/
#define SW_API_MIRROR_DEST_PORT_SET_DESC \
 	SW_PARAM_DEF(SW_API_MIRROR_DEST_PORT_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
 	SW_PARAM_DEF(SW_API_MIRROR_DEST_PORT_SET, SW_UINT32, 4, SW_PARAM_IN, "Dest Port No"),

#define SW_API_MIRROR_DEST_PORT_GET_DESC \
 	SW_PARAM_DEF(SW_API_MIRROR_DEST_PORT_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
 	SW_PARAM_DEF(SW_API_MIRROR_DEST_PORT_GET, SW_UINT32, 4, SW_PARAM_PTR|SW_PARAM_OUT, "Dest Port No"),

#define SW_API_MIRROR_SOURCE_PORT_MODE_SET_DESC \
 	SW_PARAM_DEF(SW_API_MIRROR_SOURCE_PORT_MODE_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
    SW_PARAM_DEF(SW_API_MIRROR_SOURCE_PORT_MODE_SET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
 	SW_PARAM_DEF(SW_API_MIRROR_SOURCE_PORT_MODE_SET, SW_MIRROR_MODE, sizeof(fal_mirror_mode_t), SW_PARAM_IN, "Source Mode"),

#define SW_API_MIRROR_SOURCE_PORT_MODE_GET_DESC \
 	SW_PARAM_DEF(SW_API_MIRROR_SOURCE_PORT_MODE_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
    SW_PARAM_DEF(SW_API_MIRROR_SOURCE_PORT_MODE_GET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
 	SW_PARAM_DEF(SW_API_MIRROR_SOURCE_PORT_MODE_GET, SW_MIRROR_MODE, sizeof(fal_mirror_mode_t), SW_PARAM_PTR|SW_PARAM_OUT, "Source Mode"), 	

/**********************************************************************************************************
       Trunk 
 **********************************************************************************************************/
#define SW_API_TRUNK_PAG_MODE_SET_DESC \
	SW_PARAM_DEF(SW_API_TRUNK_PAG_MODE_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_TRUNK_PAG_MODE_SET, SW_TRUNK_MODE, sizeof(fal_trunk_mode_t), SW_PARAM_IN, "Pag mode"),
	
#define SW_API_TRUNK_PAG_MODE_GET_DESC \
	SW_PARAM_DEF(SW_API_TRUNK_PAG_MODE_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_TRUNK_PAG_MODE_GET, SW_TRUNK_MODE, sizeof(fal_trunk_mode_t), SW_PARAM_PTR|SW_PARAM_OUT, "Pag mode"),

#define SW_API_TRUNK_LOAD_BALANCE_SET_DESC \
	SW_PARAM_DEF(SW_API_TRUNK_LOAD_BALANCE_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_TRUNK_LOAD_BALANCE_SET, SW_TRUNK_LOAD_BALANCE, sizeof(fal_trunk_load_balance_t), SW_PARAM_IN, "Load balance"),

#define SW_API_TRUNK_LOAD_BALANCE_GET_DESC \
	SW_PARAM_DEF(SW_API_TRUNK_LOAD_BALANCE_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_TRUNK_LOAD_BALANCE_GET, SW_TRUNK_LOAD_BALANCE, sizeof(fal_trunk_load_balance_t), SW_PARAM_PTR|SW_PARAM_OUT, "Load balance"),

#define SW_API_TRUNK_ID_SET_DESC \
	SW_PARAM_DEF(SW_API_TRUNK_ID_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_TRUNK_ID_SET, SW_UINT32, 4, SW_PARAM_IN, "Trunk id"),

#define SW_API_TRUNK_MEMBERS_SET_DESC \
	SW_PARAM_DEF(SW_API_TRUNK_MEMBERS_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_TRUNK_MEMBERS_SET, SW_JWS_PORTLIST, 4, SW_PARAM_PTR|SW_PARAM_IN, "Trunk members"),

#define SW_API_TRUNK_ROW_CREATE_DESC \
	SW_PARAM_DEF(SW_API_TRUNK_ROW_CREATE, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_TRUNK_ROW_CREATE, SW_UINT32, 4, SW_PARAM_IN, "Trunk id"), \
	SW_PARAM_DEF(SW_API_TRUNK_ROW_CREATE, SW_JWS_PORTLIST, 4, SW_PARAM_PTR|SW_PARAM_IN, "Trunk members"), \
	SW_PARAM_DEF(SW_API_TRUNK_ROW_CREATE, SW_UINT32, 4, SW_PARAM_IN, "Member Size"),

#define SW_API_TRUNK_ROW_DESTROY_DESC \
	SW_PARAM_DEF(SW_API_TRUNK_ROW_DESTROY, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_TRUNK_ROW_DESTROY, SW_UINT32, 4, SW_PARAM_IN, "Trunk id"),

#define SW_API_TRUNK_SHOW_STATUS_DESC \
	SW_PARAM_DEF(SW_API_TRUNK_SHOW_STATUS, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_TRUNK_SHOW_STATUS, SW_UINT32, 4, SW_PARAM_IN, "Trunk ID"),

/**********************************************************************************************************
       Rate 
 **********************************************************************************************************/
#define SW_API_RATE_BUCKET_EGRL_SET_DESC \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_EGRL_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_EGRL_SET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_EGRL_SET, SW_UINT32, 4, SW_PARAM_IN, "Speed"), \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_EGRL_SET, SW_ENABLE, sizeof(fal_enable_t), SW_PARAM_IN, "Enable Status"),

#define SW_API_RATE_BUCKET_EGRL_GET_DESC \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_EGRL_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_EGRL_GET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_EGRL_GET, SW_RATE_SPEED, 4, SW_PARAM_PTR|SW_PARAM_OUT, "Speed"), \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_EGRL_GET, SW_ENABLE, sizeof(fal_enable_t), SW_PARAM_PTR|SW_PARAM_OUT, "Enable Status"),

#define SW_API_RATE_BUCKET_PIRL_SET_DESC \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_PIRL_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_PIRL_SET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_PIRL_SET, SW_UINT32, 4, SW_PARAM_IN, "Bucket ID"), \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_PIRL_SET, SW_UINT32, 4, SW_PARAM_IN, "Type Mask"), \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_PIRL_SET, SW_UINT32, 4, SW_PARAM_IN, "Speed"), \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_PIRL_SET, SW_ENABLE, sizeof(fal_enable_t), SW_PARAM_IN, "Enable Status"),

#define SW_API_RATE_BUCKET_PIRL_GET_DESC \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_PIRL_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_PIRL_GET, SW_UINT32, 4, SW_PARAM_IN, "Port No."), \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_PIRL_GET, SW_UINT32, 4, SW_PARAM_IN, "Bucket ID"), \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_PIRL_GET, SW_UINT32, 4, SW_PARAM_PTR|SW_PARAM_OUT, "Type Mask"), \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_PIRL_GET, SW_RATE_SPEED, 4, SW_PARAM_PTR|SW_PARAM_OUT, "Speed"), \
	SW_PARAM_DEF(SW_API_RATE_BUCKET_PIRL_GET, SW_ENABLE, sizeof(fal_enable_t), SW_PARAM_PTR|SW_PARAM_OUT, "Enable Status"),

/**********************************************************************************************************
       Multicast 
 **********************************************************************************************************/
#define SW_API_MULTICAST_ENABLE_SET_DESC \
	SW_PARAM_DEF(SW_API_MULTICAST_ENABLE_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_MULTICAST_ENABLE_SET, SW_ENABLE, sizeof(fal_enable_t), SW_PARAM_IN, "Enable Status"),
	
#define SW_API_MULTICAST_ENABLE_GET_DESC \
	SW_PARAM_DEF(SW_API_MULTICAST_ENABLE_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_MULTICAST_ENABLE_GET, SW_ENABLE, sizeof(fal_enable_t), SW_PARAM_PTR|SW_PARAM_OUT, "Enable Status"),

#define SW_API_MULTICAST_ROW_CREATE_DESC \
	SW_PARAM_DEF(SW_API_MULTICAST_ROW_CREATE, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_MULTICAST_ROW_CREATE, SW_JWS_PORTLIST, sizeof(fal_multicast_members_t), SW_PARAM_PTR|SW_PARAM_IN, "Multicast Members"), \
	SW_PARAM_DEF(SW_API_MULTICAST_ROW_CREATE, SW_MULTICAST_ADDR, sizeof(fal_multicast_addr_t), SW_PARAM_PTR|SW_PARAM_IN, "Multicast Addr"), \
	SW_PARAM_DEF(SW_API_MULTICAST_ROW_CREATE, SW_UINT32, 4, SW_PARAM_IN, "Multicast Member Size"),

#define SW_API_MULTICAST_ROW_DESTROY_DESC \
	SW_PARAM_DEF(SW_API_MULTICAST_ROW_DESTROY, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_MULTICAST_ROW_DESTROY, SW_JWS_PORTLIST, sizeof(fal_multicast_members_t), SW_PARAM_PTR|SW_PARAM_IN, "Multicast Members"), \
	SW_PARAM_DEF(SW_API_MULTICAST_ROW_DESTROY, SW_MULTICAST_ADDR, sizeof(fal_multicast_addr_t), SW_PARAM_PTR|SW_PARAM_IN, "Multicast Addr"), \
	SW_PARAM_DEF(SW_API_MULTICAST_ROW_DESTROY, SW_UINT32, 4, SW_PARAM_IN, "Multicast Member Size"),

#define SW_API_MGMT_FRAME_SET_DESC \
	SW_PARAM_DEF(SW_API_MGMT_FRAME_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_MGMT_FRAME_SET, SW_MULTICAST_ADDR, sizeof(fal_multicast_addr_t), SW_PARAM_PTR|SW_PARAM_IN, "Mgmt Addr"), \
	SW_PARAM_DEF(SW_API_MGMT_FRAME_SET, SW_ENABLE, sizeof(fal_enable_t), SW_PARAM_IN, "Enable Status"),

/**********************************************************************************************************
       Vlan 
 **********************************************************************************************************/
#define SW_API_VLAN_MODE_SET_DESC \
	SW_PARAM_DEF(SW_API_VLAN_MODE_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_VLAN_MODE_SET, SW_VLAN_MODE, sizeof(fal_vlan_mode_t), SW_PARAM_IN, "Vlan Mode"),	

#define SW_API_VLAN_MODE_GET_DESC \
	SW_PARAM_DEF(SW_API_VLAN_MODE_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_VLAN_MODE_GET, SW_VLAN_MODE, sizeof(fal_vlan_mode_t), SW_PARAM_PTR|SW_PARAM_OUT, "Vlan Mode"),	

#define SW_API_PORT_BASED_VLAN_SET_DESC \
	SW_PARAM_DEF(SW_API_PORT_BASED_VLAN_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_PORT_BASED_VLAN_SET, SW_UINT32, 4, SW_PARAM_IN, "Port ID"), \
	SW_PARAM_DEF(SW_API_PORT_BASED_VLAN_SET, SW_JWS_PORTLIST, sizeof(fal_vlan_members_t), SW_PARAM_PTR|SW_PARAM_IN, "Vlan Members"), \
	SW_PARAM_DEF(SW_API_PORT_BASED_VLAN_SET, SW_UINT32, 4, SW_PARAM_IN, "Port-based Member Size"),

#define SW_API_8021Q_VLAN_ROW_CREATE_DESC \
	SW_PARAM_DEF(SW_API_8021Q_VLAN_ROW_CREATE, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_8021Q_VLAN_ROW_CREATE, SW_UINT32, 4, SW_PARAM_IN, "Vlan ID"), \
	SW_PARAM_DEF(SW_API_8021Q_VLAN_ROW_CREATE, SW_JWS_PORTLIST, sizeof(fal_vlan_members_t), SW_PARAM_PTR|SW_PARAM_IN, "Port Members"), \
	SW_PARAM_DEF(SW_API_8021Q_VLAN_ROW_CREATE, SW_UINT32, 4, SW_PARAM_IN, "8021q Member Size"), \
	SW_PARAM_DEF(SW_API_8021Q_VLAN_ROW_CREATE, SW_VLAN_EGRESS_TAG, sizeof(fal_vlan_egress_tag_t), SW_PARAM_PTR|SW_PARAM_IN, "EGRESS TAG"),	

#define SW_API_8021Q_VLAN_ROW_DESTROY_DESC \
	SW_PARAM_DEF(SW_API_8021Q_VLAN_ROW_DESTROY, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_8021Q_VLAN_ROW_DESTROY, SW_UINT32, 4, SW_PARAM_IN, "Vlan ID"),

#define SW_API_8021Q_VLAN_SHOW_STATUS_DESC \
	SW_PARAM_DEF(SW_API_8021Q_VLAN_SHOW_STATUS, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"),

#define SW_API_8021Q_VLAN_ROW_STATUS_DESC \
	SW_PARAM_DEF(SW_API_8021Q_VLAN_ROW_STATUS, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_8021Q_VLAN_ROW_STATUS, SW_UINT32, 4, SW_PARAM_PTR|SW_PARAM_OUT, "Vlan ID"), \
	SW_PARAM_DEF(SW_API_8021Q_VLAN_ROW_STATUS, SW_VLAN_EGRESS_TAG, sizeof(fal_vlan_egress_tag_t), SW_PARAM_PTR|SW_PARAM_OUT, "Vlan Egress Tag"),	

/**********************************************************************************************************
       QOS 
 **********************************************************************************************************/
#define SW_API_QOS_PRIO_MAP_SET_DESC \
	SW_PARAM_DEF(SW_API_QOS_PRIO_MAP_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_QOS_PRIO_MAP_SET, SW_UINT32, 4, SW_PARAM_IN, "Port ID"), \
	SW_PARAM_DEF(SW_API_QOS_PRIO_MAP_SET, SW_QOS_MAP, sizeof(fal_qos_map_t), SW_PARAM_IN, "Prio Map"),

#define SW_API_QOS_PRIO_MAP_GET_DESC \
	SW_PARAM_DEF(SW_API_QOS_PRIO_MAP_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_QOS_PRIO_MAP_GET, SW_UINT32, 4, SW_PARAM_IN, "Port ID"), \
	SW_PARAM_DEF(SW_API_QOS_PRIO_MAP_GET, SW_QOS_MAP, sizeof(fal_qos_map_t), SW_PARAM_PTR|SW_PARAM_OUT, "Prio Map"),

#define SW_API_QOS_SCHEDULE_MODE_SET_DESC \
	SW_PARAM_DEF(SW_API_QOS_SCHEDULE_MODE_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_QOS_SCHEDULE_MODE_SET, SW_UINT32, 4, SW_PARAM_IN, "Port ID"), \
	SW_PARAM_DEF(SW_API_QOS_SCHEDULE_MODE_SET, SW_QOS_SCHEDULE_MODE, sizeof(fal_qos_schedule_mode_t), SW_PARAM_IN, "Schedule Mode"),

#define SW_API_QOS_SCHEDULE_MODE_GET_DESC \
	SW_PARAM_DEF(SW_API_QOS_SCHEDULE_MODE_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_QOS_SCHEDULE_MODE_GET, SW_UINT32, 4, SW_PARAM_IN, "Port ID"), \
	SW_PARAM_DEF(SW_API_QOS_SCHEDULE_MODE_GET, SW_QOS_SCHEDULE_MODE, sizeof(fal_qos_schedule_mode_t), SW_PARAM_PTR|SW_PARAM_OUT, "Schedule Mode"),

#define SW_API_QOS_TAG_PRIO_MAP_SET_DESC \
	SW_PARAM_DEF(SW_API_QOS_TAG_PRIO_MAP_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_QOS_TAG_PRIO_MAP_SET, SW_UINT32, 4, SW_PARAM_PTR|SW_PARAM_IN, "Tag Mapping"),

#define SW_API_QOS_IP_PRIO_MAP_SET_DESC \
	SW_PARAM_DEF(SW_API_QOS_IP_PRIO_MAP_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_QOS_IP_PRIO_MAP_SET, SW_UINT32, 4, SW_PARAM_PTR|SW_PARAM_IN, "Ip Mapping"),
	
#define SW_API_QOS_ASSIGN_MODE_SET_DESC \
	SW_PARAM_DEF(SW_API_QOS_ASSIGN_MODE_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_QOS_ASSIGN_MODE_SET, SW_UINT32, 4, SW_PARAM_IN, "Port ID"), \
	SW_PARAM_DEF(SW_API_QOS_ASSIGN_MODE_SET, SW_QOS_ASSIGN_MODE, sizeof(fal_qos_assign_mode_t), SW_PARAM_IN, "Assign Mode"),
	
#define SW_API_QOS_DEFAULT_PRIO_SET_DESC \
	SW_PARAM_DEF(SW_API_QOS_DEFAULT_PRIO_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_QOS_DEFAULT_PRIO_SET, SW_UINT32, 4, SW_PARAM_IN, "Port ID"), \
	SW_PARAM_DEF(SW_API_QOS_DEFAULT_PRIO_SET, SW_QOS_DEFAULT_PRIO, sizeof(fal_qos_prio_t), SW_PARAM_IN, "Prio"),

#define SW_API_QOS_SHOW_STATUS_DESC \
	SW_PARAM_DEF(SW_API_QOS_SHOW_STATUS, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"),
	
/**********************************************************************************************************
       MAC 
 **********************************************************************************************************/
#define SW_API_MAC_AGING_TIMEOUT_SET_DESC \
	SW_PARAM_DEF(SW_API_MAC_AGING_TIMEOUT_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_MAC_AGING_TIMEOUT_SET, SW_UINT32, 4, SW_PARAM_IN, "Aging Time"),

#define SW_API_MAC_SECURE_PORT_ENABLE_SET_DESC \
	SW_PARAM_DEF(SW_API_MAC_SECURE_PORT_ENABLE_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_MAC_SECURE_PORT_ENABLE_SET, SW_UINT32, 4, SW_PARAM_IN, "Port ID"), \
	SW_PARAM_DEF(SW_API_MAC_SECURE_PORT_ENABLE_SET, SW_ENABLE, sizeof(fal_enable_t), SW_PARAM_IN, "Dev ID"),

#define SW_API_MAC_ROW_CREATE_DESC \
	SW_PARAM_DEF(SW_API_MAC_ROW_CREATE, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_MAC_ROW_CREATE, SW_UINT32, 4, SW_PARAM_IN, "Port ID"), \
	SW_PARAM_DEF(SW_API_MAC_ROW_CREATE, SW_MULTICAST_ADDR, sizeof(fal_fdb_mac_t), SW_PARAM_PTR|SW_PARAM_IN, "Mac Addr"),

#define SW_API_MAC_ROW_DESTROY_DESC \
	SW_PARAM_DEF(SW_API_MAC_ROW_DESTROY, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_MAC_ROW_DESTROY, SW_MULTICAST_ADDR, sizeof(fal_fdb_mac_t), SW_PARAM_PTR|SW_PARAM_IN, "Mac Addr"), \
	SW_PARAM_DEF(SW_API_MAC_ROW_DESTROY, SW_UINT32, 4, SW_PARAM_IN, "Port ID"),

#define SW_API_MAC_ADDR_TABLE_SHOW_DESC \
	SW_PARAM_DEF(SW_API_MAC_ADDR_TABLE_SHOW, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"),

#define SW_API_MAC_ADDR_TABLE_CLEAR_DESC \
	SW_PARAM_DEF(SW_API_MAC_ADDR_TABLE_CLEAR, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"),

#define SW_API_MAC_SHOW_BLACKLIST_DESC \
	SW_PARAM_DEF(SW_API_MAC_SHOW_BLACKLIST, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"),


#define SW_API_MAC_FLUSH_PORT_DESC \
	SW_PARAM_DEF(SW_API_MAC_FLUSH_PORT, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_MAC_FLUSH_PORT, SW_UINT32, 4, SW_PARAM_IN, "Port ID"), 

#define SW_API_8021X_PORT_AUTH_SET_DESC\
	SW_PARAM_DEF(SW_API_8021X_PORT_AUTH_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_8021X_PORT_AUTH_SET, SW_UINT32, 4, SW_PARAM_IN, "Port ID"), \
	SW_PARAM_DEF(SW_API_8021X_PORT_AUTH_SET, SW_ENABLE, sizeof(fal_enable_t), SW_PARAM_IN, "Dev ID"),

#define SW_API_8021X_MAC_BIND_DESC \
	SW_PARAM_DEF(SW_API_8021X_MAC_BIND, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"), \
	SW_PARAM_DEF(SW_API_8021X_MAC_BIND, SW_UINT32, 4, SW_PARAM_IN, "Port ID"), \
	SW_PARAM_DEF(SW_API_8021X_MAC_BIND, SW_ATU_STATUS, sizeof(fal_atu_status), SW_PARAM_IN, "ATU Status"), \
	SW_PARAM_DEF(SW_API_8021X_MAC_BIND, SW_MULTICAST_ADDR, sizeof(fal_fdb_mac_t), SW_PARAM_PTR|SW_PARAM_IN, "Mac Addr"),



/**********************************************************************************************************
       Register read/write
 **********************************************************************************************************/

#define SW_API_REG_GET_DESC \
    SW_PARAM_DEF(SW_API_REG_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"),\
    SW_PARAM_DEF(SW_API_REG_GET, SW_UINT32, 4, SW_PARAM_IN, "Reg Addr"),\
    SW_PARAM_DEF(SW_API_REG_GET, SW_UINT32, 4, SW_PARAM_PTR|SW_PARAM_OUT, "Data"),\
    SW_PARAM_DEF(SW_API_REG_GET, SW_UINT32, 4, SW_PARAM_IN, "Data Len"),

#define SW_API_REG_SET_DESC \
    SW_PARAM_DEF(SW_API_REG_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"),\
    SW_PARAM_DEF(SW_API_REG_SET, SW_UINT32, 4, SW_PARAM_IN, "Reg Addr"),\
    SW_PARAM_DEF(SW_API_REG_SET, SW_UINT32, 4, SW_PARAM_PTR|SW_PARAM_IN, "Data"),\
    SW_PARAM_DEF(SW_API_REG_SET, SW_UINT32, 4, SW_PARAM_IN, "Data Len"),

#define SW_API_REG_FIELD_GET_DESC \
    SW_PARAM_DEF(SW_API_REG_FIELD_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"),\
    SW_PARAM_DEF(SW_API_REG_FIELD_GET, SW_UINT32, 4, SW_PARAM_IN, "Reg Addr"),\
    SW_PARAM_DEF(SW_API_REG_FIELD_GET, SW_UINT32, 4, SW_PARAM_IN, "Bit Offset"),\
    SW_PARAM_DEF(SW_API_REG_FIELD_GET, SW_UINT32, 4, SW_PARAM_IN, "Field Len"),\
    SW_PARAM_DEF(SW_API_REG_FIELD_GET, SW_UINT32, 4, SW_PARAM_PTR|SW_PARAM_OUT, "Data"),\
    SW_PARAM_DEF(SW_API_REG_FIELD_GET, SW_UINT32, 4, SW_PARAM_IN, "Data Len"),

#define SW_API_REG_FIELD_SET_DESC \
    SW_PARAM_DEF(SW_API_REG_FIELD_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"),\
    SW_PARAM_DEF(SW_API_REG_FIELD_SET, SW_UINT32, 4, SW_PARAM_IN, "Reg Addr"),\
    SW_PARAM_DEF(SW_API_REG_FIELD_SET, SW_UINT32, 4, SW_PARAM_IN, "Bit Offset"),\
    SW_PARAM_DEF(SW_API_REG_FIELD_SET, SW_UINT32, 4, SW_PARAM_IN, "Field Len"),\
    SW_PARAM_DEF(SW_API_REG_FIELD_SET, SW_UINT32, 4, SW_PARAM_PTR|SW_PARAM_IN, "Data"),\
    SW_PARAM_DEF(SW_API_REG_FIELD_SET, SW_UINT32, 4, SW_PARAM_IN, "Data Len"),

#define SW_API_PHY_REG_GET_DESC \
    SW_PARAM_DEF(SW_API_PHY_REG_GET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"),\
    SW_PARAM_DEF(SW_API_PHY_REG_GET, SW_UINT32, 4, SW_PARAM_IN, "PHY ID"),\
    SW_PARAM_DEF(SW_API_PHY_REG_GET, SW_UINT32, 4, SW_PARAM_IN, "Reg Addr"),\
    SW_PARAM_DEF(SW_API_PHY_REG_GET, SW_UINT32, 4, SW_PARAM_PTR|SW_PARAM_OUT, "Data"),

#define SW_API_PHY_REG_SET_DESC \
    SW_PARAM_DEF(SW_API_PHY_REG_SET, SW_UINT32, 4, SW_PARAM_IN, "Dev ID"),\
    SW_PARAM_DEF(SW_API_PHY_REG_SET, SW_UINT32, 4, SW_PARAM_IN, "PHY ID"),\
    SW_PARAM_DEF(SW_API_PHY_REG_SET, SW_UINT32, 4, SW_PARAM_IN, "Reg Addr"),\
    SW_PARAM_DEF(SW_API_PHY_REG_SET, SW_UINT32, 4, SW_PARAM_IN, "Data"),



#define SW_API_DESC(api_id) api_id##_DESC

#ifdef __cplusplus
}
#endif
#endif

